package com.marce.remis.flexClient.commands
{
	import com.marce.remis.flexClient.control.Delegator;
	import com.marce.remis.flexClient.events.AbstractEvent;
	import com.marce.remis.flexClient.events.FindRemisesEvent;
	import com.marce.remis.flexClient.events.LoginEvent;
	import com.marce.remis.flexClient.vo.Role;
	import com.marce.remis.flexClient.vo.Usuario;
	
	import mx.controls.Alert;
	import mx.core.Application;
	import mx.resources.IResourceManager;
	import mx.resources.ResourceManager;

	public class LoginCommand extends AbstractCommand
	{
		
		
		override public function executeCommand(event:AbstractEvent):void
		{
			var evt:LoginEvent = event as LoginEvent;
			Delegator.getInstance().login(evt.usuario,this);
		}
		
		override public function onResult(data:Object):void
		{
			var usuario:Usuario = data as Usuario;
			if(usuario) activarDashwoard(usuario);
			else{
				var resourceManager:IResourceManager = ResourceManager.getInstance();
				Alert.show(resourceManager.getString("recursos","global.invalid.user"),resourceManager.getString("recursos","global.error"));
			}
				
		}
		
		private function activarDashwoard(usuario:Usuario):void{
			selectViewByRole(usuario);
		}
		
		private function selectViewByRole(usuario:Usuario):void{
			var activado:Boolean = false;
			for each(var role:Role in usuario.roles){				
				switch(role.roleName){
					case "operador":
						new FindRemisesEvent(llegadaDatos,role).dispatch();
						break;
				}
			}			
		}

		private function llegadaDatos(value:Object):void{
			var role:Role = value as Role;
			var app:RemiseriaV2 = Application.application as RemiseriaV2;
			app.addRole(role);
		}
		
	}
}